home *** CD-ROM | disk | FTP | other *** search
Text File | 1997-06-28 | 2.1 KB | 73 lines | [TEXT/CWIE] |
- // RedBlackNode.h
-
- #ifndef RedBlackNode_h
- #define RedBlackNode_h
-
- #ifndef TreeNode_h
- #include "TreeNode.h"
- #endif
-
- class RedBlackNode: private TreeNode
- {
- friend class RedBlackTree;
-
- private:
- bool red;
-
- bool IsRed() const { return red; }
- bool IsBlack() const { return !red; }
- uint32 RedChildren() const;
-
- void SwapWith( RedBlackNode& );
- void RotateUp();
-
- void Raise();
- void Lower();
-
- static RedBlackNode *DownCast( TreeNode *n ) { return static_cast< RedBlackNode* >( n ); }
- static const RedBlackNode *DownCast( const TreeNode *n ) { return static_cast< const RedBlackNode* >( n ); }
-
- static RedBlackTree& DownCast( Tree& n );
- static const RedBlackTree& DownCast( const Tree& n );
-
- public:
- RedBlackNode();
- ~RedBlackNode();
-
- TreeNode::Owned;
- RedBlackTree& Owner() { return DownCast( TreeNode::Owner() ); }
- const RedBlackTree& Owner() const { return DownCast( TreeNode::Owner() ); }
-
- RedBlackNode *Parent() { return DownCast( TreeNode::Parent() ); }
- const RedBlackNode *Parent() const { return DownCast( TreeNode::Parent() ); }
-
- RedBlackNode *Left() { return DownCast( TreeNode::Left() ); }
- const RedBlackNode *Left() const { return DownCast( TreeNode::Left() ); }
-
- RedBlackNode *Right() { return DownCast( TreeNode::Right() ); }
- const RedBlackNode *Right() const { return DownCast( TreeNode::Right() ); }
-
- RedBlackNode *Next() { return DownCast( TreeNode::Next() ); }
- const RedBlackNode *Next() const { return DownCast( TreeNode::Next() ); }
-
- RedBlackNode *Previous() { return DownCast( TreeNode::Previous() ); }
- const RedBlackNode *Previous() const { return DownCast( TreeNode::Previous() ); }
-
- RedBlackNode *Sibling() { return DownCast( TreeNode::Sibling() ); }
- const RedBlackNode *Sibling() const { return DownCast( TreeNode::Sibling() ); }
-
- TreeNode::IsRoot;
- TreeNode::IsLeftChild;
- TreeNode::IsRightChild;
-
- TreeNode::HasLeftChild;
- TreeNode::HasRightChild;
- TreeNode::IsLeaf;
-
- TreeNode::Depth;
-
- bool Valid( uint32 blackHeight ) const; // Should always be true
- };
-
- #endif
-